package com.gaoyi.crm.repository.base;

import com.gaoyi.crm.db.CrmDatabase;
import com.gaoyi.crm.db.dao.BaseDao;
import com.gaoyi.crm.db.entity.TableVersion;
import com.gaoyi.crm.repository.TableVersionRepository;

import java.util.Date;

public abstract class BaseRepository<T, D extends BaseDao<T>> {
    protected D mDao;
    protected final CrmDatabase mDatabase;
    protected int mIndex;
    protected abstract int getIndex();
    protected abstract D getDao();

    public BaseRepository() {
        mDatabase = CrmDatabase.getDatabase();
        mIndex = getIndex();
        mDao = getDao();
    }

    protected void updateTableVersion(TableVersionRepository tableVersionRep, int ver) {
        TableVersion tableVersion = tableVersionRep.getTableVersion(CrmDatabase.getSyncTableName(mIndex));
        tableVersion.setSynVer(ver);
        tableVersion.setModifyAt(new Date());
        tableVersionRep.update(tableVersion);
    }
}
